package views;
import java.awt.Dimension;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import javax.swing.*;
import javax.swing.table.*;
import models.*;
public class CustomerView extends Frame {
private Person p;
private JPanel panel = new JPanel();
private JTextField amount = new JTextField("Amount");
private JButton withdraw = new JButton("Withdraw");
private JButton deposit = new JButton("Deposit");
private JButton generateReport = new JButton("Generate Report");
private Object[][] data;
private String[] columns = { "AccountID", "Type", "Balance", "Expire Date" };
private JTable table;
public CustomerView(String title, Person p) {
super(title);
this.p = p;
amount.setPreferredSize(new Dimension(100, 20));
panel.add(amount);
panel.add(withdraw);
panel.add(deposit);
constructTable();
contentPanel.add(panel);
contentPanel.add(generateReport);
}
public void constructTable() {
ArrayList<Account> accounts = Bank.getInstance().getInfo().get(p);
data = new Object[accounts.size()][4];
int index = 0;
for (Account a : accounts) {
if (a.getExpireDate().before(new Date())) {
JOptionPane.showMessageDialog(null, "Your account " + a.getId() + " has expired. It has been renewed!");
Calendar c = Calendar.getInstance();
c.setTime(a.getExpireDate());
c.add(Calendar.DATE, 30);
a.setExpireDate(c.getTime());
}
if (a instanceof SavingsAccount) {
long days = (System.currentTimeMillis() - ((SavingsAccount) a).getLastDayWhenInterestWasCalculated().getTime())
/ (1000 * 60 * 60 * 24);
if (days > 0) {
((SavingsAccount) a).calculateInterest(days);
}
}
data[index][0] = a.getId();
data[index][1] = a.getType();
data[index][2] = a.getMoney();
data[index][3] = a.getExpireDate();
index++;
}
DefaultTableModel tableModel = new DefaultTableModel(data, columns) {
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
table = new JTable(tableModel);
table.setPreferredScrollableViewportSize(new Dimension(400, 200));
JScrollPane scrollPane = new JScrollPane(table);
contentPanel.add(scrollPane);
}
public void setWithdrawButtonActionListener(ActionListener a) {
withdraw.addActionListener(a);
}
public void setDepositButtonActionListener(ActionListener a) {
deposit.addActionListener(a);
}
public void setGenerateReportButtonActionListener(ActionListener a) {
generateReport.addActionListener(a);
}
public JTable getTable() {
return table;
}
public JTextField getAmount() {
return amount;
}
public Person getP() {
return p;
}
}